import matplotlib.pyplot as plt
import numpy as np
import math

from sympy import Number


def poly(x):
    """
    自定义多项式函数
    :param x: 输入 的值
    :return: 输入的值
    """
    return x ** 3 - 2 * x + 1

def sigmoid(x):
    """
    计算 sigmoid 函数的值
    :param x: 输入的值
    :return: 输出的值
    """
    # return 1 / (1 + pow(math.e, -x))
    return  1 / (1 + np.exp(-x))

def tanh(x):
    """
    计算 tanh 函数的值
    :param x: 输入的值
    :return: 输出的值
    """
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))


if __name__ == '__main__':

    start = -100
    end = 100
    x = np.linspace(-10, 10, 100)

    poly_y = poly(x)
    sigmoid_y = sigmoid(x)
    tanh_y = tanh(x)

    print(poly_y)
    print(sigmoid_y)
    print(tanh_y)

    # 设置绘制子图的位置，一行三列第一个
    plt.subplot(1, 3, 1)
    plt.title("poly")
    plt.grid(True)
    plt.plot(x,poly_y)

    plt.subplot(1, 3, 2)
    plt.title("sigmoid")
    plt.grid(True)
    plt.plot(x, sigmoid_y)

    plt.subplot(133)
    plt.title("tanh")
    plt.grid(True)
    plt.plot(x, tanh_y)

    plt.show()